home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok72.lha
/
while-Interpreter
/
Source
/
QuadHoleBefehle.MOD
< prev
next >
Wrap
Text File
|
1993-08-15
|
4KB
|
145 lines
(******************************
* Programm von Dieter Seidel *
* Eingegeben am 14.11.1991 *
******************************)
IMPLEMENTATION MODULE QuadHoleBefehle;
FROM InOut IMPORT WriteLn, Write, WriteString;
FROM QuadLese IMPORT MaxBefehle, MaxZeile,
arrZeile, arrList;
PROCEDURE HoleZuweisung(VAR Befehl : arrZeile;
BefehlsListe : arrList;
VAR Zeiger : CARDINAL);
VAR i : CARDINAL;
BEGIN
FOR i:=1 TO MaxZeile DO
Befehl[i]:=" ";
END;
i:=1;
WHILE (BefehlsListe[Zeiger] # ":") AND (i <= MaxZeile) DO
Befehl[i]:=BefehlsListe[Zeiger];
INC(i);
INC(Zeiger);
END;
IF i+2 > MaxZeile THEN
WriteLn;
WriteString("Kein Quadrupel moeglich!!! Erhoehe die Konstante MaxZeile.");
WriteLn;
HALT;
END;
Befehl[i]:=":";
INC(i);
INC(Zeiger);
IF (BefehlsListe[Zeiger] >= "0") AND (BefehlsListe[Zeiger] <= "9") THEN
WHILE (BefehlsListe[Zeiger] >= "0") AND
(BefehlsListe[Zeiger] <= "9") AND (i <= MaxZeile) DO
Befehl[i]:=BefehlsListe[Zeiger];
INC(i);
INC(Zeiger);
END;
IF i > MaxZeile THEN
WriteLn;
WriteString("Kein Quadrupel moeglich!!!");
WriteString(" Erhoehe die Konstante MaxZeile.");
WriteLn;
HALT;
END;
ELSE
IF (BefehlsListe[Zeiger] = "p") OR (BefehlsListe[Zeiger] = "s") THEN
WHILE (BefehlsListe[Zeiger] # ")") AND (i <= MaxZeile) DO
Befehl[i]:=BefehlsListe[Zeiger];
INC(i);
INC(Zeiger);
END;
IF i > MaxZeile THEN
WriteLn;
WriteString("Kein Quadrupel moeglich!!!");
WriteString(" Erhoehe die Konstante MaxZeile.");
WriteLn;
HALT;
END;
Befehl[i]:=")";
INC(Zeiger);
ELSE
IF BefehlsListe[Zeiger] = "X" THEN
Befehl[i]:="X";
INC(i);
INC(Zeiger);
WHILE (BefehlsListe[Zeiger] >= "0") AND
(BefehlsListe[Zeiger] <= "9") AND (i <= MaxZeile) DO
Befehl[i]:=BefehlsListe[Zeiger];
INC(i);
INC(Zeiger);
END;
ELSE
WriteLn;
WriteString("Kein Quadrupel moeglich, da keine gueltige Anweisung!!!");
WriteLn;
HALT;
END;
END;
END;
IF BefehlsListe[Zeiger] = ";" THEN INC(Zeiger) END;
END HoleZuweisung;
PROCEDURE HoleSchleife(VAR Befehl : arrZeile;
BefehlsListe : arrList;
VAR Zeiger : CARDINAL);
VAR i : CARDINAL;
BEGIN
FOR i:=1 TO MaxZeile DO
Befehl[i]:=" ";
END;
i:=1;
WHILE (BefehlsListe[Zeiger] # "d") AND (i <= MaxZeile) DO
Befehl[i]:=BefehlsListe[Zeiger];
INC(i);
INC(Zeiger);
END;
IF BefehlsListe[Zeiger] # "d" THEN
WriteLn;
WriteString("Kein Quadrupel moeglich, da keine gueltige Anweisung!!!");
WriteLn;
HALT;
END;
INC(Zeiger);
END HoleSchleife;
PROCEDURE HoleUnterprogramm(VAR Befehl : arrZeile;
BefehlsListe : arrList;
VAR Zeiger : CARDINAL);
VAR i : CARDINAL;
BEGIN
FOR i:=1 TO MaxZeile DO
Befehl[i]:=" ";
END;
Befehl[1]:="U";
INC(Zeiger);
i:=2;
WHILE (BefehlsListe[Zeiger] >= "0") AND
(BefehlsListe[Zeiger] <= "9") AND (i <= MaxZeile) DO
Befehl[i]:=BefehlsListe[Zeiger];
INC(i);
INC(Zeiger);
END;
IF i > MaxZeile THEN
WriteLn;
WriteString("Kein Quadrupel moeglich!!!");
WriteString(" Erhoehe die Konstante MaxZeile.");
WriteLn;
HALT;
END;
IF BefehlsListe[Zeiger] = ";" THEN
INC(Zeiger)
END;
END HoleUnterprogramm;
END QuadHoleBefehle.